// praxis/hardware/simulated_actuator.h
#pragma once

#include <praxis/praxis_export.h>

#include "praxis/hardware/iactuator.h"

namespace praxis {
class PRAXIS_API CSimulatedActuator : public IActuator {
 public:
  CSimulatedActuator(const std::string& name, const std::string& unit,
                     double initial_value, double change_rate_per_second);

  const std::string& GetName() const override;
  double GetCurrentValue() const override;
  void SetTarget(double target) override;
  void Update() override;

 private:
  std::string name_;
  std::string unit_;
  double current_value_;
  double target_value_;
  double max_change_per_update_;  // Based on 500ms timer
};
}  // namespace praxis
